%module OgreResourceManager

%{
#include "OGRE/OgreResourceManager.h"
%}

%import "OgrePrerequisites.i"
%import "OgreCommon.i"
%import "OgreResource.i"

namespace Ogre {

	%nodefaultctor ResourceManager;
	class ResourceManager
	{
	public:

		virtual void unload(const String& name);
		
		virtual void unloadAll(bool reloadableOnly = true);

		virtual void reloadAll(bool reloadableOnly = true);

		virtual void unloadUnreferencedResources(bool reloadableOnly = true);
		virtual void reloadUnreferencedResources(bool reloadableOnly = true);
		virtual void remove(ResourcePtr& r);

		virtual void remove(const String& name);
		
//		virtual void remove(ResourceHandle handle);

		virtual void removeAll(void);

		virtual void removeUnreferencedResources(bool reloadableOnly = true);

		virtual ResourcePtr getByName(const String& name, const String& groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);

		virtual ResourcePtr getByHandle(ResourceHandle handle);
		
//		virtual ResourcePtr load(const String& name, 
//					 const String& group, bool isManual = false, 
//					 ManualResourceLoader* loader = 0, const NameValuePairList* loadParams = 0,
//					 bool backgroundThread = false);
    };

}
